package com.activitiFlow.service;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;

public interface IRepositoryBiz {
	/**
	 * 保存新建的流程的zip文件
	 * @param filename
	 * @param fileStream
	 */
	void saveNewDeploy(String filename, InputStream fileStream);
	
	/**
	 * 查询所有流程的部署信息
	 * @return
	 */
	List<Deployment> queryDeploymentList();
	
	/**
	 * 查询所有最新流程的明细信息
	 * @return
	 */
	List<ProcessDefinition> queryProcessDefinitionList();
	
	/**
	 * 查询最新版本的流程Key和流程名称 
	 * @return 格式：Map<流程key,流程Name>
	 */
	Map<String, String> getProcessDefinitionKeyName();
	
	/**
	 * 根据流程id，查询流程定义信息
	 * @param deploymentId
	 * @return
	 */
	Deployment queryDeploymentById(String deploymentId);
	
	/**
	 * 查看流程图
	 * @param deploymentId
	 * @param imageName
	 * @return
	 */
	InputStream findDeployImg(String deploymentId, String imageName);
	
	/**
	 * 删除流程
	 * @param deploymentId
	 */
	void deleteDeploy(String deploymentId);
	
	/**
	 * 根据processInstanceId获取流程定义相关信息
	 * @param processInstanceId
	 * @return
	 */
	ProcessDefinition getProcessDefinitionById(String processInstanceId);
	
	/**
	 * 根据任务id查询流程定义的具体信息
	 * @param taskId
	 * @return
	 */
	ProcessDefinition queryProcessDefinitionByTaskId(String taskId);

}
